Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Commit c800fc09bfc0733aee3a5f1c2de8a3d98e999eb5


Parents : d4dd993
Author : Ivan <ivan@quad4.io>
Signature : Signature validation error
Date : 2026-04-29T19:30:53-05:00

feat(donate): add donation options and integrate into the About page

Changes
Diff

diff --git a/README.md b/README.md
index 3f3237f7..6ffbfab9 100644
--- a/README.md
+++ b/README.md
@@ -11,6 +11,7 @@ This project is independent from the original Reticulum MeshChat project and is
- Official GitHub Mirror: [github.com/Quad4-Software/MeshChatX](https://github.com/Quad4-Software/MeshChatX)
- Releases: [github.com/Quad4-Software/MeshChatX](https://github.com/Quad4-Software/MeshChatX)
- Changelog: [`CHANGELOG.md`](CHANGELOG.md)
+- Donate: [`donate.md`](donate.md) ([Donation](#donation))
rngit: `git clone rns://926baefe13daf5178c174f158dae1b45/quad4/MeshChatX`
@@ -374,6 +375,12 @@ Run `pnpm test -- tests/frontend/i18n.test.js --run` to verify key parity with `
No other code changes are required. The app, language selector, and tests all discover locales from the `meshchatx/src/frontend/locales/` directory at build time.
+## Donation
+
+Donations are voluntary. They help fund time and effort to develop this app.
+
+**Ways to give:** [`donate.md`](donate.md) (Monero, Ko-Fi, Buy Me a Coffee).
+
## Credits
- [Liam Cottle](https://github.com/liamcottle) - Original Reticulum MeshChat

diff --git a/donate.md b/donate.md
new file mode 100644
index 00000000..ce09267f
--- /dev/null
+++ b/donate.md
@@ -0,0 +1,15 @@
+# Donate
+
+## Monero (XMR)
+
+```
+8AfDSLVeTSt1oku5ifK4jkbJ94fp5kW6y5RWxuP1FYmyZmLHYRVSrPXJJaX7mK1n7MQUzwYE15uVdQVeAuWWnR5pDkN52xU
+```
+
+## Ko-Fi
+
+[https://ko-fi.com/quad4](https://ko-fi.com/quad4)
+
+## Buy Me a Coffee
+
+[https://buymeacoffee.com/quad4](https://buymeacoffee.com/quad4)

diff --git a/lang/README.de.md b/lang/README.de.md
index 132af4b6..e5c1efa2 100644
--- a/lang/README.de.md
+++ b/lang/README.de.md
@@ -11,6 +11,7 @@ Dieses Projekt ist unabhaengig vom originalen Reticulum MeshChat und steht in ke
- Offizielles GitHub-Mirror: [github.com/Quad4-Software/MeshChatX](https://github.com/Quad4-Software/MeshChatX)
- Releases: [github.com/Quad4-Software/MeshChatX](https://github.com/Quad4-Software/MeshChatX)
- Aenderungsprotokoll: [`CHANGELOG.md`](../CHANGELOG.md)
+- Spenden: [`donate.md`](../donate.md)
rngit: `git clone rns://926baefe13daf5178c174f158dae1b45/quad4/MeshChatX`
NomadNet Node: `c10d80b1a42fa958c37a6cc30dc04f53:/page/index.mu`
@@ -369,6 +370,12 @@ Nach jeder maschinellen Runde Grammatik, Kontext und Ton (formell vs. informell)
Keine weiteren Code-Aenderungen noetig. App, Sprachwahl und Tests lesen Locales zur Build-Zeit aus `meshchatx/src/frontend/locales/`.
+## Spenden
+
+Spenden sind freiwillig. Sie helfen, Zeit und Aufwand fuer die Entwicklung dieser App zu finanzieren.
+
+**Moeglichkeiten:** [`donate.md`](../donate.md) (Monero, Ko-Fi, Buy Me a Coffee).
+
## Mitwirkende
- [Liam Cottle](https://github.com/liamcottle) - Originales Reticulum MeshChat

diff --git a/lang/README.it.md b/lang/README.it.md
index cb29ca18..6c17a066 100644
--- a/lang/README.it.md
+++ b/lang/README.it.md
@@ -11,6 +11,7 @@ Questo progetto e indipendente dal progetto originale Reticulum MeshChat e non e
- Mirror ufficiale su GitHub: [github.com/Quad4-Software/MeshChatX](https://github.com/Quad4-Software/MeshChatX)
- Release: [github.com/Quad4-Software/MeshChatX](https://github.com/Quad4-Software/MeshChatX)
- Changelog: [`CHANGELOG.md`](../CHANGELOG.md)
+- Donazioni: [`donate.md`](../donate.md)
rngit: `git clone rns://926baefe13daf5178c174f158dae1b45/quad4/MeshChatX`
NomadNet Node: `c10d80b1a42fa958c37a6cc30dc04f53:/page/index.mu`
@@ -369,6 +370,12 @@ Esegui `pnpm test -- tests/frontend/i18n.test.js --run` per verificare la parita
Non sono necessarie altre modifiche al codice. L'app, il selettore della lingua e i test scoprono le lingue dalla cartella `meshchatx/src/frontend/locales/` durante la compilazione.
+## Donazioni
+
+Le donazioni sono facoltative. Servono a finanziare tempo e impegno per sviluppare questa app.
+
+**Come donare:** [`donate.md`](../donate.md) (Monero, Ko-Fi, Buy Me a Coffee).
+
## Crediti
- [Liam Cottle](https://github.com/liamcottle) - Reticulum MeshChat originale

diff --git a/lang/README.ja.md b/lang/README.ja.md
index 43556b07..b3b2b9d8 100644
--- a/lang/README.ja.md
+++ b/lang/README.ja.md
@@ -11,6 +11,7 @@ Liam Cottle 氏による Reticulum MeshChat を大幅に改修・機能拡張し
- 公式 GitHub ミラー: [github.com/Quad4-Software/MeshChatX](https://github.com/Quad4-Software/MeshChatX)
- リリース: [github.com/Quad4-Software/MeshChatX](https://github.com/Quad4-Software/MeshChatX)
- 変更履歴: [`CHANGELOG.md`](../CHANGELOG.md)
+- 寄付: [`donate.md`](../donate.md)
rngit: `git clone rns://926baefe13daf5178c174f158dae1b45/quad4/MeshChatX`
NomadNet Node: `c10d80b1a42fa958c37a6cc30dc04f53:/page/index.mu`
@@ -369,6 +370,12 @@ python scripts/argos_translate.py --from en --to xx --input meshchatx/src/fronte
その他のコードの変更は必要ありません。アプリ、言語セレクター、およびテストは、ビルド時に `meshchatx/src/frontend/locales/` ディレクトリからロケールを検出します。
+## 寄付
+
+寄付は任意です。このアプリを開発するための時間と労力に充てられます。
+
+**寄付の方法:** [`donate.md`](../donate.md)(Monero、Ko-Fi、Buy Me a Coffee)。
+
## クレジット
- [Liam Cottle](https://github.com/liamcottle) - オリジナル Reticulum MeshChat

diff --git a/lang/README.ru.md b/lang/README.ru.md
index 1a223d85..6bd835cd 100644
--- a/lang/README.ru.md
+++ b/lang/README.ru.md
@@ -11,6 +11,7 @@
- Официальное зеркало на GitHub: [github.com/Quad4-Software/MeshChatX](https://github.com/Quad4-Software/MeshChatX)
- Релизы: [github.com/Quad4-Software/MeshChatX](https://github.com/Quad4-Software/MeshChatX)
- Журнал изменений: [`CHANGELOG.md`](../CHANGELOG.md)
+- Поддержка проекта: [`donate.md`](../donate.md)
rngit: `git clone rns://926baefe13daf5178c174f158dae1b45/quad4/MeshChatX`
NomadNet Node: `c10d80b1a42fa958c37a6cc30dc04f53:/page/index.mu`
@@ -369,6 +370,12 @@ python scripts/argos_translate.py --from en --to xx --input meshchatx/src/fronte
Никаких других изменений в коде не требуется. Приложение, селектор языка и тесты обнаруживают локали из каталога `meshchatx/src/frontend/locales/` во время сборки.
+## Поддержка проекта
+
+Пожертвования добровольны. Они помогают оплатить время и усилия на разработку этого приложения.
+
+**Как поддержать:** [`donate.md`](../donate.md) (Monero, Ko-Fi, Buy Me a Coffee).
+
## Авторы
- [Liam Cottle](https://github.com/liamcottle) - оригинальный Reticulum MeshChat

diff --git a/lang/README.zh.md b/lang/README.zh.md
index f7a8ac54..cc4eff44 100644
--- a/lang/README.zh.md
+++ b/lang/README.zh.md
@@ -11,6 +11,7 @@ Liam Cottle 开发的 Reticulum MeshChat 的一个功能丰富的深度修改分
- 官方 GitHub 镜像: [github.com/Quad4-Software/MeshChatX](https://github.com/Quad4-Software/MeshChatX)
- 发行版: [github.com/Quad4-Software/MeshChatX](https://github.com/Quad4-Software/MeshChatX)
- 变更日志: [`CHANGELOG.md`](../CHANGELOG.md)
+- 捐赠: [`donate.md`](../donate.md)
rngit: `git clone rns://926baefe13daf5178c174f158dae1b45/quad4/MeshChatX`
NomadNet Node: `c10d80b1a42fa958c37a6cc30dc04f53:/page/index.mu`
@@ -369,6 +370,12 @@ python scripts/argos_translate.py --from en --to xx --input meshchatx/src/fronte
不需要其他代码更改。应用程序、语言选择器和测试在构建时从 `meshchatx/src/frontend/locales/` 目录发现所有语言环境。
+## 捐赠
+
+捐赠纯属自愿,用于为本应用的开发提供时间与精力。
+
+**捐赠方式:** [`donate.md`](../donate.md)(Monero、Ko-Fi、Buy Me a Coffee)。
+
## 致谢
- [Liam Cottle](https://github.com/liamcottle) - 原始 Reticulum MeshChat

diff --git a/meshchatx/src/frontend/components/about/AboutPage.vue b/meshchatx/src/frontend/components/about/AboutPage.vue
index 79e2efca..7dbf123a 100644
--- a/meshchatx/src/frontend/components/about/AboutPage.vue
+++ b/meshchatx/src/frontend/components/about/AboutPage.vue
@@ -176,6 +176,70 @@
</transition>
</div>
+ <div class="mt-6 pt-6 border-t border-gray-200/70 dark:border-zinc-800/80 space-y-3">
+ <button
+ type="button"
+ class="w-full text-left flex items-center justify-between px-4 py-2 rounded-xl bg-violet-500/10 hover:bg-violet-500/20 text-violet-800 dark:text-violet-200 border border-violet-500/20 transition-all"
+ @click="showDonate = !showDonate"
+ >
+ <div class="flex items-center gap-2">
+ <v-icon icon="mdi-hand-heart" size="18"></v-icon>
+ <span class="text-xs font-black uppercase tracking-widest">{{
+ $t("about.donate_label")
+ }}</span>
+ </div>
+ <v-icon :icon="showDonate ? 'mdi-chevron-up' : 'mdi-chevron-down'" size="18"></v-icon>
+ </button>
+
+ <transition name="fade">
+ <div
+ v-if="showDonate"
+ class="mt-4 p-5 rounded-2xl bg-white/50 dark:bg-zinc-950/50 border border-gray-100 dark:border-zinc-800 space-y-4"
+ >
+ <div class="space-y-1">
+ <div class="text-[9px] font-black text-gray-400 uppercase tracking-widest">
+ {{ $t("about.donate_monero_label") }}
+ </div>
+ <div class="flex items-center gap-2">
+ <code
+ class="text-[11px] font-mono bg-zinc-100 dark:bg-zinc-900 px-2 py-1 rounded-lg break-all select-all"
+ >{{ moneroDonateAddress }}</code
+ >
+ <button
+ type="button"
+ class="p-1 hover:text-violet-600 dark:hover:text-violet-300 transition shrink-0"
+ :aria-label="$t('about.donate_copy_monero')"
+ @click="copyValue(moneroDonateAddress, 'about.donate_monero_label')"
+ >
+ <v-icon icon="mdi-content-copy" size="14"></v-icon>
+ </button>
+ </div>
+ </div>
+
+ <div class="flex flex-col gap-2 sm:flex-row sm:flex-wrap pt-1">
+ <a
+ href="https://ko-fi.com/quad4"
+ target="_blank"
+ rel="noopener noreferrer"
+ class="inline-flex flex-1 items-center justify-center gap-2 px-4 py-2.5 rounded-xl bg-orange-500/15 hover:bg-orange-500/25 text-orange-900 dark:text-orange-100 border border-orange-500/25 text-xs font-bold uppercase tracking-wide min-h-[44px]"
+ >
+ <v-icon icon="mdi-coffee" size="18"></v-icon>
+ {{ $t("about.donate_kofi") }}
+ </a>
+ <a
+ href="https://buymeacoffee.com/quad4"
+ target="_blank"
+ rel="noopener noreferrer"
+ class="inline-flex flex-1 items-center justify-center gap-2 px-4 py-2.5 rounded-xl bg-amber-500/15 hover:bg-amber-500/25 text-amber-950 dark:text-amber-50 border border-amber-500/25 text-xs font-bold uppercase tracking-wide min-h-[44px]"
+ >
+ <v-icon icon="mdi-cup" size="18"></v-icon>
+ {{ $t("about.donate_buymeacoffee") }}
+ </a>
+ </div>
+ </div>
+ </transition>
+ </div>
+
<div class="flex items-center gap-6 shrink-0">
<div class="text-right">
<div
@@ -973,6 +1037,9 @@ export default {
chromeVersion: null,
nodeVersion: null,
showContactDev: false,
+ showDonate: false,
+ moneroDonateAddress:
+ "83SUg6mmkkVGwCycckLEgRfdmXNm7H9XtVjbGXp5kko71N6pTefYURJeS7WdEGHrz2aagmt4nF3dWg6mHcYs6yu4EokwhTh",
};
},
computed: {

diff --git a/meshchatx/src/frontend/locales/de.json b/meshchatx/src/frontend/locales/de.json
index 083b9a72..97665195 100644
--- a/meshchatx/src/frontend/locales/de.json
+++ b/meshchatx/src/frontend/locales/de.json
@@ -809,6 +809,11 @@
"contact_developer": "Entwickler kontaktieren",
"contact_lxmf_address": "LXMF-Adresse",
"contact_propagation_hint": "An den Verbreitungsknoten senden, wenn Sie mich nicht direkt erreichen können.",
+ "donate_label": "Spenden",
+ "donate_monero_label": "Monero (XMR)",
+ "donate_copy_monero": "Monero-Adresse kopieren",
+ "donate_kofi": "Ko-fi",
+ "donate_buymeacoffee": "Buy Me a Coffee",
"copied_label_to_clipboard": "{label} in die Zwischenablage kopiert",
"core_runtime": "Kernlaufzeit",
"creating": "Wird erstellt…",

diff --git a/meshchatx/src/frontend/locales/en.json b/meshchatx/src/frontend/locales/en.json
index 98f7a854..e4765535 100644
--- a/meshchatx/src/frontend/locales/en.json
+++ b/meshchatx/src/frontend/locales/en.json
@@ -739,6 +739,11 @@
"contact_developer": "Contact Developer",
"contact_lxmf_address": "LXMF Address",
"contact_propagation_hint": "Send to propagation node if you cant reach me!",
+ "donate_label": "Donate",
+ "donate_monero_label": "Monero (XMR)",
+ "donate_copy_monero": "Copy Monero address",
+ "donate_kofi": "Ko-fi",
+ "donate_buymeacoffee": "Buy Me a Coffee",
"copied_label_to_clipboard": "{label} copied to clipboard",
"core_runtime": "Core Runtime",
"creating": "Creating...",

diff --git a/meshchatx/src/frontend/locales/es.json b/meshchatx/src/frontend/locales/es.json
index 85afe6c4..0f1f0782 100644
--- a/meshchatx/src/frontend/locales/es.json
+++ b/meshchatx/src/frontend/locales/es.json
@@ -757,6 +757,11 @@
"contact_developer": "Contactar con el desarrollador",
"contact_lxmf_address": "Dirección LXMF",
"contact_propagation_hint": "Enviar al nodo de propagación si no puedes alcanzarme directamente.",
+ "donate_label": "Donar",
+ "donate_monero_label": "Monero (XMR)",
+ "donate_copy_monero": "Copiar dirección Monero",
+ "donate_kofi": "Ko-fi",
+ "donate_buymeacoffee": "Buy Me a Coffee",
"copied_label_to_clipboard": "{label} copiado al portapapeles",
"core_runtime": "Motor principal",
"creating": "Creando…",

diff --git a/meshchatx/src/frontend/locales/fr.json b/meshchatx/src/frontend/locales/fr.json
index 66cbb029..01c2ebcd 100644
--- a/meshchatx/src/frontend/locales/fr.json
+++ b/meshchatx/src/frontend/locales/fr.json
@@ -757,6 +757,11 @@
"contact_developer": "Contacter le développeur",
"contact_lxmf_address": "Adresse LXMF",
"contact_propagation_hint": "Envoyez au nœud de propagation si vous ne pouvez pas me joindre directement.",
+ "donate_label": "Faire un don",
+ "donate_monero_label": "Monero (XMR)",
+ "donate_copy_monero": "Copier l’adresse Monero",
+ "donate_kofi": "Ko-fi",
+ "donate_buymeacoffee": "Buy Me a Coffee",
"copied_label_to_clipboard": "{label} copié dans le presse-papiers",
"core_runtime": "Exécution principale",
"creating": "Création…",

diff --git a/meshchatx/src/frontend/locales/it.json b/meshchatx/src/frontend/locales/it.json
index d2eb8de5..d202c27f 100644
--- a/meshchatx/src/frontend/locales/it.json
+++ b/meshchatx/src/frontend/locales/it.json
@@ -809,6 +809,11 @@
"contact_developer": "Contatta lo sviluppatore",
"contact_lxmf_address": "Indirizzo LXMF",
"contact_propagation_hint": "Invia al nodo di propagazione se non riesci a raggiungermi direttamente.",
+ "donate_label": "Dona",
+ "donate_monero_label": "Monero (XMR)",
+ "donate_copy_monero": "Copia indirizzo Monero",
+ "donate_kofi": "Ko-fi",
+ "donate_buymeacoffee": "Buy Me a Coffee",
"copied_label_to_clipboard": "{label} copiato negli appunti",
"core_runtime": "Runtime principale",
"creating": "Creazione in corso…",

diff --git a/meshchatx/src/frontend/locales/nl.json b/meshchatx/src/frontend/locales/nl.json
index f680304b..0675e94b 100644
--- a/meshchatx/src/frontend/locales/nl.json
+++ b/meshchatx/src/frontend/locales/nl.json
@@ -757,6 +757,11 @@
"contact_developer": "Ontwikkelaar contacteren",
"contact_lxmf_address": "LXMF-adres",
"contact_propagation_hint": "Stuur naar het propagatieknooppunt als je me niet direct kunt bereiken.",
+ "donate_label": "Doneren",
+ "donate_monero_label": "Monero (XMR)",
+ "donate_copy_monero": "Monero-adres kopiëren",
+ "donate_kofi": "Ko-fi",
+ "donate_buymeacoffee": "Buy Me a Coffee",
"copied_label_to_clipboard": "{label} naar klembord gekopieerd",
"core_runtime": "Kernruntime",
"creating": "Bezig met maken…",

diff --git a/meshchatx/src/frontend/locales/ru.json b/meshchatx/src/frontend/locales/ru.json
index 4333da1f..dfa10c9c 100644
--- a/meshchatx/src/frontend/locales/ru.json
+++ b/meshchatx/src/frontend/locales/ru.json
@@ -809,6 +809,11 @@
"contact_developer": "Связаться с разработчиком",
"contact_lxmf_address": "Адрес LXMF",
"contact_propagation_hint": "Отправьте на узел распространения, если не удаётся связаться со мной напрямую.",
+ "donate_label": "Пожертвование",
+ "donate_monero_label": "Monero (XMR)",
+ "donate_copy_monero": "Копировать адрес Monero",
+ "donate_kofi": "Ko-fi",
+ "donate_buymeacoffee": "Buy Me a Coffee",
"copied_label_to_clipboard": "{label} скопировано в буфер обмена",
"core_runtime": "Основная среда выполнения",
"creating": "Создание…",

diff --git a/meshchatx/src/frontend/locales/zh.json b/meshchatx/src/frontend/locales/zh.json
index 3a650a4c..e5b37eb0 100644
--- a/meshchatx/src/frontend/locales/zh.json
+++ b/meshchatx/src/frontend/locales/zh.json
@@ -757,6 +757,11 @@
"contact_developer": "联系开发者",
"contact_lxmf_address": "LXMF 地址",
"contact_propagation_hint": "若无法直接联系我,请发送至传播节点。",
+ "donate_label": "捐赠",
+ "donate_monero_label": "Monero(XMR)",
+ "donate_copy_monero": "复制 Monero 地址",
+ "donate_kofi": "Ko-fi",
+ "donate_buymeacoffee": "Buy Me a Coffee",
"copied_label_to_clipboard": "{label} 已复制到剪贴板",
"core_runtime": "核心运行时",
"creating": "正在创建…",


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────